package org.jflame.auth.session;

import java.util.List;

/**
 * 维护<code>SessionInfo</code>实例的注册表
 * 
 * @author charles.zhang
 */
public interface SessionRegistry {

    /**
     * 返回所有登录的会话账号
     * 
     * @return
     */
    List<String> getAllPrincipals();

    /**
     * 返回指定账号的所有会话信息
     * 
     * @param principal
     * @param includeExpiredSessions
     * @return
     */
    List<SessionInfo> getAllSessions(String principal, boolean includeExpiredSessions);

    /**
     * 返回sessionId关联的会话信息
     * 
     * @param sessionId
     * @return
     */
    SessionInfo getSessionInfo(String sessionId);

    void refreshLastRequest(String sessionId);

    void registerNewSession(String sessionId, String principal);

    void removeSessionInfo(String sessionId);
}
